package com.voiceblog.action;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;

import org.apache.struts2.ServletActionContext;

import com.voiceblog.model.Photo;
import com.voiceblog.model.Users;
import com.voiceblog.model.UsersDAO;

public class RegisterAction extends BaseAction {

	private static final int BUFFER_SIZE = 16 * 1024;

	private File myFile;
	private String fileName;
	private String imageFileName;
	private Users users;
	private UsersDAO usersDAO;
	private String repassword;
	private String account;

	public Users getUsers() {
		return users;
	}

	public void setUsers(Users users) {
		this.users = users;
	}

	public UsersDAO getUsersDAO() {
		return usersDAO;
	}

	public void setUsersDAO(UsersDAO usersDAO) {
		this.usersDAO = usersDAO;
	}

	public void setMyFileFileName(String fileName) {
		this.fileName = fileName;
	}

	public void setMyFile(File myFile) {
		this.myFile = myFile;
	}

	public String getImageFileName() {
		return imageFileName;
	}

	public String getRepassword() {
		return repassword;
	}

	public void setRepassword(String repassword) {
		this.repassword = repassword;
	}

	private static void copy(File src, File dst) {
		try {
			InputStream in = null;
			OutputStream out = null;
			try {
				in = new BufferedInputStream(new FileInputStream(src),
						BUFFER_SIZE);
				out = new BufferedOutputStream(new FileOutputStream(dst),
						BUFFER_SIZE);
				byte[] buffer = new byte[BUFFER_SIZE];
				while (in.read(buffer) > 0) {
					out.write(buffer);
				}
			} finally {
				if (null != in) {
					in.close();
				}
				if (null != out) {
					out.close();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static String getExtention(String fileName) {
		System.out.println(fileName);
		int pos = fileName.lastIndexOf(".");
		return fileName.substring(pos);
	}

	public String execute() {
		if (fileName != null) {
			imageFileName = new Date().getTime() + getExtention(fileName);
			File imageFile = new File(ServletActionContext.getServletContext()
					.getRealPath("/UploadImages")
					+ "/" + imageFileName);
			copy(myFile, imageFile);
			users.setHeadImage(imageFileName);
		}
		// users.setAccount(account);
		users.setUserType(1);
		users.setBlogGrade(1);
		users.setLastLoginTime(new Date());
		users.setVisitNumber(1);
		System.out.println(users.getAccount());
		usersDAO.save(users);
		return SUCCESS;
	}

	public String getAccount() {
		return account;
	}

	public void setAccount(String account) {
		this.account = account;
	}

}
